import scrapy
from scrapy_study_04_dangdang.items import ScrapyStudy04DangdangItem


class DangSpider(scrapy.Spider):
    name = "dang"
    # 这里只写域名，在旧版本上面会自动添加原始请求，但是在请求多个页面，不同接口的时候这里只能写域名
    allowed_domains = ["category.dangdang.com"]
    start_urls = ["https://category.dangdang.com/cp01.01.01.00.00.00.html"]

    base_url = "https://category.dangdang.com/pg"
    page = 1

    def parse(self, response):
        # pipelines 存储数据
        # item 定义数据

        li_list = response.xpath("//ul[@id='component_59']/li")
        for li in li_list:
            title = li.xpath(".//a[1]/@title").extract_first()
            # detail = li.xpath(".//p[1]/a/text()").extract_first()
            price = li.xpath(".//p[3]/span[1]/text()").extract_first()
            img = li.xpath(".//img/@data-original").extract_first()
            if img:
                img = img
            else:
                img = li.xpath(".//img/@src").extract_first()  # 防止出现没有data-original数据的情况
            book = ScrapyStudy04DangdangItem(img_url="https:" + img, title=title, price=price)

            # 获取一个book就将book交给pipelines
            yield book

        if self.page <= 100:
            url = self.base_url + str(self.page) + "-cp01.01.07.00.00.00.html"
            self.page += 1
            # 调用parse函数get请求
            # scrapy.Request就是scrapy的
            # url 就是请求地址
            # callback 回调函数（即需要调用的函数，后面不用加()）
            yield scrapy.Request(url=url, callback=self.parse)
